NextBlog

React-Query 캐싱 활용하기

YoungCheon%20Kim

YoungCheon Kim

|

12/21/2024

coverImg
노션 블로그에서 하위 페이지 이동 시 발생하는 불필요한 API 호출로 인한 성능 저하 문제가 관찰되었습니다.
기존의 커스텀 훅 방식에서는 페이지 ID가 변경될 때마다 API를 호출하여 데이터를 가져왔으며, 이는 이미 방문했던 페이지를 다시 방문할 때도 동일하게 발생했습니다.
이 구현은 React의 useEffect를 사용한 커스텀 훅으로, pageId의 변경을 감지하여 API를 호출하는 방식이었습니다. 하지만 이는 다음과 같은 한계를 보였습니다
  1. 동일 페이지 재방문 시에도 새로운 API 호출 발생
  1. 페이지 간 빠른 이동 시 불필요한 데이터 Fetch
  1. 이전 방문 데이터의 재활용 불가
 
이러한 문제를 해결하기 위해 React Query를 도입하여 데이터 캐싱을 구현했습니다.
 
이를 이용하여 포스트 내 하위 페이지 5번 이동 시나리오로 성능을 측정한 결과
  1. API 호출 횟수
      • 기존 방식: 10회
      • 개선 후: 5회 (50% 감소)
  1. 응답 시간
      • 기존 방식: 460ms
        • notion image
      • 개선 후: 185ms (약 60% 개선)
        • notion image
       
React Query의 캐싱 도입을 통해 불필요한 API 호출을 효과적으로 줄이고, 페이지 이동 시 응답 시간을 크게 개선했습니다. 이는 사용자 경험 향상에 직접적인 영향을 미쳤으며, 서버 부하 감소에도 기여했습니다.